const got = require('@/utils/got');

const ProcessFeed = async (list, cache) => {
    const detailUrl = 'https://www.infoq.cn/public/v1/article/getDetail';

    const items = await Promise.all(
        list.map(async (e) => {
            const uuid = e.uuid;
            const single = await cache.tryGet(uuid, async () => {
                const link = `https://www.infoq.cn/article/${uuid}`;
                const resp = await got({
                    method: 'post',
                    url: detailUrl,
                    headers: {
                        Referer: link,
                    },
                    json: true,
                    data: {
                        uuid: uuid,
                    },
                });

                const data = resp.data.data;
                const author = data.author ? data.author.map((p) => p.nickname).join(',') : data.no_author;
                const pubDate = new Date();
                pubDate.setTime(data.publish_time);

                return {
                    title: data.article_title,
                    description: data.content,
                    pubDate,
                    author: author,
                    link,
                };
            });

            return Promise.resolve(single);
        })
    );

    return items;
};

module.exports = {
    ProcessFeed,
};
